package com.liliudong.template.common.security.util;

import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.stp.StpUtil;
import com.liliudong.template.common.constant.SaSessionConst;
import com.liliudong.template.common.entity.sys.SysRole;
import com.liliudong.template.common.security.CurrentUser;

import java.util.List;
import java.util.Set;

/**
 * 安全工具
 *
 * @author ldli5
 * @classname SecurityUtil
 * @date 2024/6/19-16:51
 */
public class SecurityUtil {

    /**
     * 获取登录用户id
     *
     * @return long
     */
    public static long getLoginUserId() {
        return StpUtil.getLoginIdAsLong();
    }

    /**
     * 获取权限
     *
     * @return {@link Set }<{@link String }>
     */
    public static List<String> getPermissionList() {
        return StpUtil.getPermissionList();
    }

    /**
     * 获取角色
     *
     * @return {@link List }<{@link String }>
     */
    public static List<String> getRoleList() {
        return StpUtil.getRoleList();
    }

    /**
     * 获取数据范围
     *
     * @return {@link Set }<{@link Integer }>
     */
    @SuppressWarnings("unchecked")
    public static Set<SysRole.DataScope> getDataScopes() {
        return StpUtil.getTokenSession().getModel(SaSessionConst.DATA_SCOPES, Set.class);
    }

    /**
     * 获取部门编号
     *
     * @return {@link String }
     */
    public static String getDeptNo() {
        return StpUtil.getTokenSession().getModel(SaSessionConst.DEPT_NO, String.class);
    }

    /**
     * 获取用户
     *
     * @return {@link CurrentUser }
     */
    public static CurrentUser getUser() {
        return StpUtil.getTokenSession().getModel(SaSession.USER, CurrentUser.class);
    }
}

